业务平台
一些下拉菜单之类的地方需要的数据,因为不同页面需要的数据不同但是又有些重合,所以把这类数据放在一个接口里,前端可以通过 request 来决定需要哪些数据
method
GET
request
stations O bool (0 或 1) response 里是否返回 stations 字段,默认 false
roles O bool (0 或 1) response 里是否返回 roles 字段,默认 false
station_permissions O bool (0 或 1) response 里是否返回 station_permissions 字段,默认 false
station_id O str response 里返回的 station_permissions 字段对应的站点ID;如果 request 里 station_permissions 没有传或者为 false 的话,但是 station_id 传了的话,response 里也会有 station_permissions 字段
response
{
data: {
stations: [ // 登录的加盟商管理员 对应的加盟商 旗下的所有站点
{
id: str
name: str
}
],
roles: [
{
station_id str
id: int
name: str
}
],
station_permissions: [
{
"id": 1, // level 1 id
"name": "部门", // level 1 name
"content": [
{
"id": 4, // level 2 id
"name": "部门管理", // level 2 name
"permissions": [
{
"id": 4, // permission id
"name": "增加部门", // permission name
},
]
},
]
},
]
},
code: 0,
msg: 'OK',
}
logic
「station_id 字段需要传」当且仅当「request 中传了 station_permissions 字段,而且 station_permissions 的值为 1」
具体的原因是:同一个加盟商下不同站点的权限不同,如果用户以加盟商管理员的身份登录本系统的话,那么为了区分自己所在的加盟商下的站点,需要传这个字段
graphql
query {
stations (station_id: {}) {
id
name
}
roles (station_id: {}) {
id
name
}
permissions (station_id: {}) {
permission_level2_class {
permission_level1_class
}
}
}
业务平台,角色管理,按角色查看
/station/role/search
搜索(station)角色
method
GET
request
station_id O str 不传代表全部
search_text O str 角色名,不传代表全部
response
{
data: {
roles: [
id: M int
name: M str
station_name: M str
description: M str
create_date: M str or null
]
}
msg: "OK",
code: 0
}
graphql
query {
roles (
station_id: {station_id}
contain_role_name: {name}
) {
id
name
description
create_date
station {
name
}
}
}
/station/role/detail
查看(station)角色的详情
method
GET
request
id M int 角色 id
response
{
data: {
id: M int
name: M str
station_id: M str
station_name: M str
description: M str
permission_ids: M list of int
},
msg: "OK",
code: 0
}
graphql
query {
role (
id: $id
) {
id
name
description
station {
id
name
}
permissions: {
id
name
}
}
}
/station/role/name/check
新建角色前检查角色用户名是否可用
method
POST
request
name M str
station_id M str
response
{
data: null
msg: 'OK'
code: 0
}
{
data: null
msg: '当前站点已经有名为 {} 的角色了,请修改角色名称'
code: 1
}
graphql
query {
roles(username: {username}, station_id: {station_id}) {
id
}
}
/station/role/create
创建(station)角色
method
POST
request
name: M str
station_id: M str
description: O str
permission_ids: M search of int
response
{
data: { id: 123 } // M int
msg: 'OK',
code: 0
}
microservices
/station/role/create
/station/role/update
更新(station)角色
method
POST
request
id M int
name O str
// station_id O str station 的role不允许修改所属的 station_id
description O str
permission_ids O list of int
response
{ "code": 0, "msg": "OK", "data": null }
microservices
/station/role/update
/station/role/delete
删除(station)角色
method
POST
request
id M int 角色 id
response
{ "code": 0, "msg": "OK", "data": null }
microservices
/station/role/delete
业务平台,角色管理,按权限查看
/station/role/permission/search
搜索(station)权限
method
GET
request
level_1_id int O 一级权限的id,不传代表全部一级权限
level_2_id int O 二级,同上
search_text string O 要搜索的权限名,不传代表全部
response
{
data: {
permissions: M list [
{
id: M str
name: M str
level_1_name: M str
level_2_name: M str
user_count: M int
role_count: M int
role_names: M list of str // 最多返回11条
}
},
msg: 'OK',
code: 0,
]
logic
1. 如果用户以MA管理员登录的话,user_count 和 role_count 只统计MA管理员所在加盟商下面的;如果用户以station管理员登录的话,只统计所在站点下面的。
2. user_count 只统计「有效」的用户,不统计「无效」的用户
graphql
query {
permissions (partner_id: {}) {
id
name
permission_level2_class {
id
name
permission_level1_class {
id
name
}
}
stations (partner_id: {}) {
id
name
}
roles (partner_id: {}) {
name
}
users (partner_id: {}) {
id
}
}
}
query {
permissions (station_id: $station_id) {
id
name
permission_level2_class {
id
name
permission_level1_class {
id
name
}
}
stations (station_id: $station_id) {
id
name
}
roles (station_id: $station_id) {
name
}
users (station_id: $station_id) {
id
}
}
}
/station/role/permission/detail
查询某个权限已分配的角色和所有可分配的角色
method
GET
request
id M int 权限 id
response
{
data: {
roles:[ M list
{
"id": 61, M int
"name": “增加采购单” M str
"station_id": "T002" M str
}
],
available_roles: [ M list
{
"id": 62, M int
"name": “增加采购任务” M str
"station_id": "T002" M str
}
]
}
}
logic
available_roles 代表可以赋予此权限的所有角色。data.roles 是 data.available_roles 的子集。
之所以添加这个字段,原因是:同一个加盟商旗下的站点不同,不同站点拥有的 station 权限不同。当加盟商管理员登录 gm_account,调用 /station/role/permission/update 接口时,request中的 role_ids 必须是「「「这个加盟商旗下的 而且 拥有这个权限的」的站点」的角色」的子集。
graphql
query {
permission (id: {}) {
stations { # 拥有这个权限的站点们
id
roles { # 拥有这个权限的站点们旗下的所有角色
id
name
}
}
roles {
id
name
}
}
}
/station/role/permission/update
更新「激活某个(station)权限的所有(station)角色」
method
POST
request
permission_id M int
role_ids M list of int
response
{ "code": 0, "msg": "OK", "data": null }
logic
当登录用户是 ma 管理员时,role_ids 必须是 /station/role/permission/detail 接口 rsponse 中 available_roles 的子集。
当登录用户是 station 管理员时,role_ids 必须是 /station/meta_info 接口 response 中 roles 的子集
microservice
/station/permission/change_role
业务平台,用户管理
/station/user/search
搜索(station)用户
method
GET
request
is_valid O bool (0 或 1)
station_id O str
role_id O int
search_text O str
is_admin O bool (0 或 1) 是否是管理员
// 分页
offset O int 默认 0
limit O int 默认 20
response
{
data: {
users: [ M list
{
id: M int 用户 id
username: M str 用户名
name: M str 姓名
roles: [
{
id: 123,
name: '角色名'
}
]
is_admin: M bool 是否是管理员
is_valid: M bool
create_date: M str or null
role_name M str
station_name M str
}
]
],
msg: 'OK',
code: 0,
}
logic
request 里不传的字段代表全部
graphql
{
query {
users {
id
name
username
is_admin
is_valid
role_name
create_time
roles {
id
name
}
station {
name
}
}
}
}
/station/user/detail
(station)用户详情
method
GET
request
id M int
response
{
data: {
id M int user id
username: M str 用户名
station_id M str 所属站点 id
is_admin: M bool 是否是管理员
name: M str 姓名
phone: M str 手机
email: M str 邮箱
roles: [
{
id: 123,
name: '角色名'
}
]
is_admin: M bool
name: M str
phone: M str
email: M str
card_id: M str 身份证号码
is_valid M bool 是否有效
card_emblem_img_url M str 身份证国徽面的图片 url
card_photo_img_url M str 身份证照片面的图片 url
},
msg: 'OK',
code: 0,
}
graphql {
user {
id
username
station_id
is_admin
name
phone
email
roles {
id
name
}
is_admin
name
phone
email
card_id
is_valid
card_emblem_img_url
card_photo_img_url
}
}
/station/user/create
创建(station)用户
method
POST
request
username M str
station_id M str
role_ids M list of int
is_admin M bool (0 或 1)
is_valid M bool (0 或 1)
password M str
name O str 姓名
phone O str
email O str
card_id O str 身份证号码
card_emblem_img O str 身份证带国徽一面 id
card_photo_img O str 身份证带相片一面 id
response
{
data: { id: 123 } // M int 用户 id
msg: 'OK',
code: 0,
}
microservices
/station/user/create
/station/user/update
更新(station)用户
method
POST
request
id M int
username O str
role_ids O list of int
is_admin O bool (0 或 1)
is_valid O bool (0 或 1)
password O str
name O str
phone O str
email O str
card_id O str 身份证号码
card_emblem_img O str 身份证带国徽一面 id
card_photo_img O str 身份证带相片一面 id
response
{
data: { id: 123 } // M int
msg: 'OK',
code: 0,
}
logic
所有非必须的参数,如果不传就代表不修改
当前登录用户不可以修改自己的「username, role_ids, is_admin, is_valid」,如果传了这几个字段的话后台会报错
microservices
/station/user/update
/station/user/delete
删除(station)用户
method
POST
request
id M int
response
{ "code": 0, "msg": "OK", "data": null }
logic
当前登录用户不可以删除自己
microservices
/station/user/delete